/**********************************************************

     文件名称: user_login.c

     项目功能: 用户登录功能 

     作者: 佳奇

     邮箱: 1374804492@qq.com 

     创建时间: Sat 27 Aug 2022 03:53:58 PM CST

**********************************************************/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "sup_mgr.h"
#include "md5.h"


static admin* check_pwd(const char* , const char*, admin*);


//	用户登陆界面 校验成功返回该用户的密码节点指针 否则返回NULL
admin* user_login(void)
{
	system("clear");
	int cnt = 0;
	char username[31], *userpwd;
	
	printf("\n\t\t      ========  欢迎进入 超市销售管理系统 很高兴见到您!  ========\n\n");
	get_time();
	printf("\n  \t\t\t\t\t      用户登录\n\n");

	while(++cnt)
	{	
		printf("\n\t\t\t\t用户名:");
		scanf("%30s", username);
		c_buffer();
		userpwd = getpass("\t\t\t\t密码:");

		//	将输入的密码进行md5加密后与数据中的密码进行校验 
		//	校验成功返回该用户的密码节点指针 失败返回NULL
		if(!check_pwd(username, md5_encode(userpwd, strlen(userpwd)), s4))
		{
			fprintf(stderr, "\n\n\t\t\t账号或密码输入错误！请重新输入\n\n");

			if(cnt == 2)	fprintf(stderr, "\n\t\t\t账号或密码输入错误 2 次！再次输入错误将直接退出系统\n\n");

			if(cnt == 3)
			{
				fprintf(stderr, "\n\t\t\t非常抱歉，账号或密码错误次数太多，下次再见!\n\n");
				return NULL;
			}
		}
		else return check_pwd(username, md5_encode(userpwd, strlen(userpwd)), s4);
	}


}


//	校验用户名与密码是否匹配
//	匹配返回 该密码节点指针 不匹配返回 NULL
static admin* check_pwd(const char* user, const char* pwd, admin* s4)
{
	s4 = s4->next;

	while(s4 != NULL)
	{
		if((strcmp(s4->data->user_name, user) == 0) && (strcmp(s4->data->user_pwd, pwd) == 0))	break;
		
		s4 = s4->next;
	}

	return s4;
}	




